package com;

public class GameRule {

	private boolean tempMap[][];

	boolean update(GameMap gMap){
        int i, j;
        int rows = gMap.getRows();
        int cols= gMap.getCols();
        
        tempMap = new boolean[gMap.getRows()][gMap.getCols()];
        
        for(i=0;i<rows;i++) {
            for (j = 0; j < cols; j++) {
                if(gMap.get(i, j) == false) {//死细胞，看是否能活过来
                    if(gMap.getNeighborCount(i,j)==3){
                	//if(gMap.getNeighborCount(i,j)==0){	
                		tempMap[i][j] = true;
                    }
                    else {
                    	tempMap[i][j] = false;
                    }
                }
                else{//活细胞看是否会死去
                    if(gMap.getNeighborCount(i,j)<2 || gMap.getNeighborCount(i,j)>3){
                	//if(gMap.getNeighborCount(i,j)>3){
                		tempMap[i][j] = false;
                    }
                    else{
                    	tempMap[i][j] = true;
                    }
                }
            }
        }
        resetGameMap(gMap,tempMap);
        return true;
    }

    public static void resetGameMap(GameMap gMap,boolean[][] temp_map){
        int i,j;
        int rows = gMap.getRows();
        int cols= gMap.getCols();
        boolean[][] map=gMap.getMap();

        for(i=0;i<rows;i++) {
            for (j = 0; j < cols; j++) {
            	gMap.set(i,j,temp_map[i][j]);
            }
        }
        
        //System.arraycopy(map, 0, temp_map,0, map.length);
    }
}
